package com.alan.springBoot.exception;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

/**
 * 全局异常处理方式-2
 * 	实现HandlerExceptionResolver 类，
 * 在Spring的配置文件applicationContext.xml中增加以下内容：
 * Xml代码 注入bean
 * <bean id="exceptionHandler" class="cn.basttg.core.exception.MyExceptionHandler"/> 
 * Spring MVC处理异常有3种方式：
	（1）使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver；
	（2）实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器；
	（3）使用@ExceptionHandler注解实现异常处理；
 * @author Alan
 *
 */
public class MyExceptionHandler implements HandlerExceptionResolver {  
	
	/**
	 * is ok 根据异常返回不同页面 
	 */
	@Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,  
            Exception ex) {  
        Map<String, Object> model = new HashMap<String, Object>();  
        model.put("ex", ex);
        
        System.out.println("-----------sf------"+ex.getMessage());
        // 根据不同错误转向不同页面  
        if(ex instanceof BusinessException) {  
        	System.out.println("-----------------");
            return new ModelAndView("error-business", model);  
        }else if(ex instanceof ParameterException) {
        	System.out.println("-----4545454--------");
            return new ModelAndView("error-parameter", model);  
        } else {  
        	 System.out.println("----78888-----");
            return new ModelAndView("error1", model);  
        }  
    }
	
}  